/**
 * 获取数字颜色
 * @description 根据涨跌幅返回对应的颜色 大于0为红色 等于0为黑色 小于0为绿色
 * @param value - 数值即涨跌幅
 * @returns {string|string} 颜色
 */
function formatNumberColor(value) {
    if (value === undefined || value === null) return '#000';
    return value > 0 ? '#ff2436' : value < 0 ? '#07AB4B' : '#000';
}

/**
 * 给文案赋值颜色
 * @param value 文案
 * @returns {string}
 */
function formatNumberColorByStr(value) {
    if (value === undefined || value === null) return '#000';
    if( value.indexOf('-') > -1 ){
        return '#07AB4B'
    }
    return '#ff2436'
}

/**
 * 给及格线赋值颜色
 * @param value 数值
 * @param passNumber    及格线数值
 * @returns {string|string}
 */
function formatNumberColorByPassNumber(value, passNumber) {
    if (value === undefined || value === null) return '#000';
    if( value === passNumber ){
        return '#000'
    }
    return value > passNumber ? '#ff2436' : '#07AB4B';
}

/**
 * 数字格式化方法
 * @description 根据参数对数字进行不同方式的格式化处理
 * @param {number} num - 要格式化的数字
 * @param {number} decimalNum - 保留的小数位数
 * @param {number} type - 格式化类型 1-四舍五入 2-舍去小数位
 * @returns {number} 格式化后的数字
 */
function formatNumber(num, decimalNum, type) {
    if (isNaN(num)) return '-';
    const power = Math.pow(10, decimalNum);
    let result;
    switch (type) {
        case 1: // 四舍五入
            result = Math.round(num * power) / power;
            break;
        case 2: // 舍去小数位
            result = Math.floor(num * power) / power;
            break;
        default:
            result = num;
    }
    return result.toFixed(decimalNum);
}


/**
 * 格式化数字为中文单位
 * @param num   数字
 * @returns {string}    友好的中文提示
 */
function formatNumberToChineseUnit(num) {
    if (isNaN(num)) return '-';
    const absNum = Math.abs(num);
    let result;
    if (absNum >= 1000000000000) {
        result = (num / 1000000000000).toFixed(2) + '万亿';
    }else if (absNum >= 100000000) {
        result = (num / 100000000).toFixed(2) + '亿';
    } else if (absNum >= 10000) {
        result = (num / 10000).toFixed(2) + '万';
    } else {
        result = Number(num).toFixed(2).toString();
    }
    // 去除末尾的.00
    return result.replace(/\.?0+([万亿])$/, '$1');
}

/**
 * 去除模态框全选状态
 * 有时候打开模态框的时候会出现全选的情况
 */
function windowRemoveAllRanges(){
    if(window.getSelection) {
        window.getSelection().removeAllRanges();
    }
}

/**
 * 获取刷新间隔
 * @param fast  最快多少秒刷新
 * @param slow  最慢多少秒刷新
 * @returns {*}
 */
function getRefreshInterval(fast, slow) {
    const now = new Date();
    const hour = now.getHours();
    const minute = now.getMinutes();
    const dayOfWeek = now.getDay(); // 0 (Sunday) to 6 (Saturday)
    // 判断是否在下午4:10到第二天的9:15之间
    const isAfternoonToNextMorning = (hour > 16 || (hour === 16 && minute >= 10)) || (hour < 9 || (hour === 9 && minute <= 15));
    // 判断是否是周六或周日
    const isWeekend = dayOfWeek === 0 || dayOfWeek === 6;
    if (isAfternoonToNextMorning || isWeekend) {
        return slow || 30000; // 30秒
    } else {
        return fast || 2000;
    }
}

/**
 * 按标题获取股票代码
 * @param str   标题：“恒生科技ETF-sh513130-沪A” 或 “小米集团-W-hk01810-港股”
 * @returns 返回可以搜索的代码
 */
function extractStockCode(str) {
    if( str ){
        var arr = str.split('-');
        if( !arr || arr.length < 3 ){
            return str;
        }
        return arr[arr.length - 2]
    }
    return str;
}

/**
 * 全局的提示文案
 */
function showTip(tipContent) {
    // 创建或获取提示元素
    let tipElement = document.getElementById('space-close-tip');
    if (!tipElement) {
        tipElement = document.createElement('div');
        tipElement.id = 'space-close-tip';
        tipElement.textContent = tipContent;
        tipElement.style.position = 'fixed';
        tipElement.style.top = '50%';
        tipElement.style.left = '50%';
        tipElement.style.transform = 'translateX(-50%)';
        tipElement.style.backgroundColor = 'rgba(0, 0, 0, 0.7)';
        tipElement.style.color = 'white';
        tipElement.style.padding = '10px 20px';
        tipElement.style.borderRadius = '4px';
        tipElement.style.zIndex = '10000';
        tipElement.style.fontSize = '14px';
        tipElement.style.opacity = '0';
        tipElement.style.transition = 'opacity 0.3s ease-in-out';
        document.body.appendChild(tipElement);
    }
    // 显示提示
    tipElement.style.opacity = '1';
    //X毫秒后隐藏提示
    setTimeout(() => {
        tipElement.style.opacity = '0';
        tipElement.remove();
    }, 750);
}